// Generated from Nasm.g4 by ANTLR 4.9.3
import org.antlr.v4.runtime.tree.ParseTreeListener;

/**
 * This interface defines a complete listener for a parse tree produced by
 * {@link NasmParser}.
 */
public interface NasmListener extends ParseTreeListener {
	/**
	 * Enter a parse tree produced by {@link NasmParser#program}.
	 * @param ctx the parse tree
	 */
	void enterProgram(NasmParser.ProgramContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#program}.
	 * @param ctx the parse tree
	 */
	void exitProgram(NasmParser.ProgramContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#statement}.
	 * @param ctx the parse tree
	 */
	void enterStatement(NasmParser.StatementContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#statement}.
	 * @param ctx the parse tree
	 */
	void exitStatement(NasmParser.StatementContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#declare}.
	 * @param ctx the parse tree
	 */
	void enterDeclare(NasmParser.DeclareContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#declare}.
	 * @param ctx the parse tree
	 */
	void exitDeclare(NasmParser.DeclareContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#idTail}.
	 * @param ctx the parse tree
	 */
	void enterIdTail(NasmParser.IdTailContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#idTail}.
	 * @param ctx the parse tree
	 */
	void exitIdTail(NasmParser.IdTailContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#data}.
	 * @param ctx the parse tree
	 */
	void enterData(NasmParser.DataContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#data}.
	 * @param ctx the parse tree
	 */
	void exitData(NasmParser.DataContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#type}.
	 * @param ctx the parse tree
	 */
	void enterType(NasmParser.TypeContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#type}.
	 * @param ctx the parse tree
	 */
	void exitType(NasmParser.TypeContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#sign}.
	 * @param ctx the parse tree
	 */
	void enterSign(NasmParser.SignContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#sign}.
	 * @param ctx the parse tree
	 */
	void exitSign(NasmParser.SignContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#instructionPacket}.
	 * @param ctx the parse tree
	 */
	void enterInstructionPacket(NasmParser.InstructionPacketContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#instructionPacket}.
	 * @param ctx the parse tree
	 */
	void exitInstructionPacket(NasmParser.InstructionPacketContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#instruction}.
	 * @param ctx the parse tree
	 */
	void enterInstruction(NasmParser.InstructionContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#instruction}.
	 * @param ctx the parse tree
	 */
	void exitInstruction(NasmParser.InstructionContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#threeOp}.
	 * @param ctx the parse tree
	 */
	void enterThreeOp(NasmParser.ThreeOpContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#threeOp}.
	 * @param ctx the parse tree
	 */
	void exitThreeOp(NasmParser.ThreeOpContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#twoOp}.
	 * @param ctx the parse tree
	 */
	void enterTwoOp(NasmParser.TwoOpContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#twoOp}.
	 * @param ctx the parse tree
	 */
	void exitTwoOp(NasmParser.TwoOpContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#oneOp}.
	 * @param ctx the parse tree
	 */
	void enterOneOp(NasmParser.OneOpContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#oneOp}.
	 * @param ctx the parse tree
	 */
	void exitOneOp(NasmParser.OneOpContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#noneOp}.
	 * @param ctx the parse tree
	 */
	void enterNoneOp(NasmParser.NoneOpContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#noneOp}.
	 * @param ctx the parse tree
	 */
	void exitNoneOp(NasmParser.NoneOpContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#operand}.
	 * @param ctx the parse tree
	 */
	void enterOperand(NasmParser.OperandContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#operand}.
	 * @param ctx the parse tree
	 */
	void exitOperand(NasmParser.OperandContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#regs}.
	 * @param ctx the parse tree
	 */
	void enterRegs(NasmParser.RegsContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#regs}.
	 * @param ctx the parse tree
	 */
	void exitRegs(NasmParser.RegsContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#reg}.
	 * @param ctx the parse tree
	 */
	void enterReg(NasmParser.RegContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#reg}.
	 * @param ctx the parse tree
	 */
	void exitReg(NasmParser.RegContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#memory}.
	 * @param ctx the parse tree
	 */
	void enterMemory(NasmParser.MemoryContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#memory}.
	 * @param ctx the parse tree
	 */
	void exitMemory(NasmParser.MemoryContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#lop}.
	 * @param ctx the parse tree
	 */
	void enterLop(NasmParser.LopContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#lop}.
	 * @param ctx the parse tree
	 */
	void exitLop(NasmParser.LopContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#rop}.
	 * @param ctx the parse tree
	 */
	void enterRop(NasmParser.RopContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#rop}.
	 * @param ctx the parse tree
	 */
	void exitRop(NasmParser.RopContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#expr}.
	 * @param ctx the parse tree
	 */
	void enterExpr(NasmParser.ExprContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#expr}.
	 * @param ctx the parse tree
	 */
	void exitExpr(NasmParser.ExprContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#adds}.
	 * @param ctx the parse tree
	 */
	void enterAdds(NasmParser.AddsContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#adds}.
	 * @param ctx the parse tree
	 */
	void exitAdds(NasmParser.AddsContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#item}.
	 * @param ctx the parse tree
	 */
	void enterItem(NasmParser.ItemContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#item}.
	 * @param ctx the parse tree
	 */
	void exitItem(NasmParser.ItemContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#muls}.
	 * @param ctx the parse tree
	 */
	void enterMuls(NasmParser.MulsContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#muls}.
	 * @param ctx the parse tree
	 */
	void exitMuls(NasmParser.MulsContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#factor}.
	 * @param ctx the parse tree
	 */
	void enterFactor(NasmParser.FactorContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#factor}.
	 * @param ctx the parse tree
	 */
	void exitFactor(NasmParser.FactorContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#shift}.
	 * @param ctx the parse tree
	 */
	void enterShift(NasmParser.ShiftContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#shift}.
	 * @param ctx the parse tree
	 */
	void exitShift(NasmParser.ShiftContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#val}.
	 * @param ctx the parse tree
	 */
	void enterVal(NasmParser.ValContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#val}.
	 * @param ctx the parse tree
	 */
	void exitVal(NasmParser.ValContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#num}.
	 * @param ctx the parse tree
	 */
	void enterNum(NasmParser.NumContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#num}.
	 * @param ctx the parse tree
	 */
	void exitNum(NasmParser.NumContext ctx);
	/**
	 * Enter a parse tree produced by {@link NasmParser#size}.
	 * @param ctx the parse tree
	 */
	void enterSize(NasmParser.SizeContext ctx);
	/**
	 * Exit a parse tree produced by {@link NasmParser#size}.
	 * @param ctx the parse tree
	 */
	void exitSize(NasmParser.SizeContext ctx);
}